#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main()
{
  //  pid_t id = fork();
  //  if(id < 0) return 1;
  //  else if(id == 0)//子进程结束后由父进程回收
  //  {
  //      // 子进程
  //      int cnt = 5;
  //      while(cnt)
  //      {
  //          printf("I am child, run times: %d\n", cnt--);
  //          sleep(1);
  //      }
  //
  //      printf("I am child, dead!: %d\n", cnt--);
  //
  //      exit(2);
  //      // 回收操作，后面说
  //  }
  //  else{
  //      // 父进程
  //      while(1)
  //      {
  //          printf("I am father ... \n");
  //          sleep(1);
  //      }
  //  }


  //  pid_t id = fork();
  //  if(id < 0) return 1;
  //  else if(id == 0)//模拟子进程还在运行而父进程结束的场景，当父进程结束时变成Z状态，由bash回收后变成X状态
  //  //子进程结束时也是Z状态，但是父进程无法再来回收，只能由操作系统（pid为1）来认领回收（子进程成为孤儿进程）
  //  //如果没有认领孤儿进程，该进程会成为内存碎片导致内存泄漏（孤儿进程可以处于R/X/Z等状态）
  //  {
  //      // 子进程
  //      while(1)
  //      {
  //          printf("I am child ... \n");
  //          sleep(1);
  //      }
  //  }
  //  else{
  //      // 父进程
  //      int cnt = 5;
  //      while(cnt)
  //      {
  //          printf("I am father, run times: %d\n", cnt--);
  //          sleep(1);
  //      }
  //
  //      printf("I am father, dead!: %d\n", cnt--);
  //
  //      exit(2);
  //      // 回收操作，后面说
  //  }

    while(1)//这段代码用于测试进程优先级及其更改
    {
        printf("I am a process: %d\n", getpid());
        sleep(1);
    }


    return 0;
}

